﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ABC_SA_WEB.WebServiceDestino;



namespace ABC_SA_WEB
{
    public partial class Destinos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        // metodo para cargar imagen previo
        protected void btnCargar_Click(object sender, EventArgs e)
        {
            if (this.FileUpload1.HasFile && this.btnCargar.Text == "Cargar")
            {
                string[] allowedExtension = { ".gif", ".jpg", ".png", ".jpeg" };
                string fileExtension = System.IO.Path.GetExtension(this.FileUpload1.FileName);
                //string ruta = FileUpload1.FileName;
                //lblRuta.Text = ruta;

                if (allowedExtension.Contains(fileExtension))
                {
                    if (this.btnCargar.Text == "Cargar")
                    {
                        HttpPostedFile file = FileUpload1.PostedFile;

                        //almacenar fichero en byte[]
                        int lengthFile = file.ContentLength;
                        byte[] fileArray = new byte[lengthFile];
                        file.InputStream.Read(fileArray, 0, lengthFile);

                        //grabar en Session
                        Session["IMAGEN"] = fileArray;

                        //mostrar imagen en control Image
                        ByteArrayToImageControl(fileArray, fileExtension);
                    }
                }
            }// fin del if


        }


        protected void ByteArrayToImageControl(byte[] fileArray, string fileExtension)
        {
            string base64String = Convert.ToBase64String(fileArray, 0, fileArray.Length);
            this.Image1.ImageUrl = "data:image/" + fileExtension + "png;base64," + base64String;
            this.Image1.Visible = true;
        }

        protected void SessionToFile(byte[] fileArray)
        {
            System.IO.FileStream file = System.IO.File.Create(HttpContext.Current.Server.MapPath(@"/imageLibrary/test"));

            file.Write(fileArray, 0, fileArray.Length);
            file.Close();

            Session["IMAGEN"] = null;
            Image1.Visible = false;
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            wsDestinos servicio = new wsDestinos();
            String nombre = txtNombre.Text;
            String pais = txtPais.Text;
            String provincia = txtProvincia.Text;
            String ciudad = txtCiudad.Text;
            String descripcion = txtDescripcion.Text;
            String gpsx = txtX.Text;
            String gpsy = txtY.Text;
           
            byte[] imagen;

            // guardar el arreglo de bytes en imagen
            imagen = (byte[])Session["IMAGEN"];

            // validar espacios en blanco
            if (nombre != "" && pais != "" && provincia != "" && ciudad != "" && descripcion != "")
            {
                if (imagen != null)
                {
                    if (gpsx != "" && gpsy != "")
                    {
                        bool agregado = servicio.agregarDestino(nombre, pais, provincia, ciudad, descripcion, gpsx, gpsy, imagen);
                        
                        if (agregado)
                        {
                            limpiarTextos();
                            string prompt = "<script type='text/javascript'>showNotification({message: 'Destino agregado correctamente',type: 'success',autoClose: true,duration: 3});</script>";
                            ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                            
                        }// fin de if destino agregado
                        else 
                        {
                            string prompt = "<script type='text/javascript'>showNotification({message: 'No se pudo agregar el destino',type: 'error',autoClose: true,duration: 3});</script>";
                            ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                        }// fin del else destino no se agrego

                    } // fin de if validacion de imagen 
                    else
                    {
                        string prompt = "<script type='text/javascript'>showNotification({message: 'Debe seleccionar un direccion en el mapa',type: 'error',autoClose: true,duration: 3});</script>";
                        ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                    } // fin del else  mensaje error carga imagen
                } // fin del if validacion de mapa

                else 
                {
                    string prompt = "<script type='text/javascript'>showNotification({message: 'Debe seleccionar  y cargar una imagen',type: 'error',autoClose: true,duration: 3});</script>";
                    ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
                }// fin de else mensaje error seleccionar direccion en mapa

                  
            }// fin if validacion campos de texto vacios
            else 
            {
                string prompt = "<script type='text/javascript'>showNotification({message: 'Debe llenar la informacion necesaria',type: 'error',autoClose: true,duration: 3});</script>";
                ClientScript.RegisterStartupScript(typeof(Page), "alert", prompt);
            }

        }

        // limpia textos
        public void limpiarTextos() {
            txtNombre.Text = "";
            txtPais.Text = "";
            txtProvincia.Text = "";
            txtCiudad.Text = "";
            txtDescripcion.Text = "";
            txtX.Text = "28.92163128242129";
            txtY.Text = " -8.96484375";
            Image1.Visible = false;
        }// fin del metodo limpiar textos


        protected void btnMostrarLista_Click(object sender, EventArgs e)
        {
            Response.Redirect("ListarDestinos.aspx");
        }

        protected void btnVolver_Click(object sender, EventArgs e)
        {
            Response.Redirect("PaginaAdmin.aspx");
        }
    }
}